<?php
require_once ('adodb5/adodb-errorpear.inc.php');
require_once ('adodb5/adodb.inc.php');

class Zen
{


    private static $conexion = null;

    private $motor;

    private $server;

    private $db;

    private $usuario;

    private $clave;


    public $TiempoSesion = 3600;


    public $ZenError;

    private $error2 = 'ERROR SQL';


    private function __construct()
    {
        // echo 'Ina instancia de Db <br />';
    }

    // EL metodo singleton
    public static function Db($debug = false)
    {
        if (!self::$conexion instanceof self) {
            //$c = __class__ ;
            //self::$conexion = new $c ;
            require_once ('config.php');
            self::$conexion = new self;

            $motor = DB_MOTOR;

            $server = DB_SERVER;

            $db = DB_NOMBRE;

            $usuario = DB_USUARIO;

            $clave = DB_CLAVE;


            self::$conexion = ADONewConnection($motor);

            self::$conexion->debug = $debug;

            self::$conexion->PConnect($server, $usuario, $clave, $db);
            //$e = ADODB_Pear_Error();
            //self::$ZenError = $e->message;
        }

        return self::$conexion;
    }

    // Clone no permitido
    public function __clone()
    {
        trigger_error('Clone no se permite debes usar GetInstancia.', E_USER_ERROR);
    }
    public function __wakeup()
    {
        trigger_error("No puedes deserializar una instancia de " . get_class($this) .
            " class.");
    }


    function LoginSesion()
    {

        //$expireTime = 3600 * 8;

        //ini_set("session.gc_maxlifetime", $expireTime);

        //ini_set("session.gc_divisor", "1");

        //ini_set("session.gc_probability", "1");

        session_name("Login");

        session_start();

        $_SESSION["HoraSesion"] = date("H:i:s");

    }

    function IniciarSesion()
    {

        //$expireTime = 3600 * 8;

        //ini_set("session.gc_maxlifetime", $expireTime);

        // ini_set("session.gc_divisor", "1");

        //ini_set("session.gc_probability", "1");

        session_name("Login");

        session_start();

        if ($_SESSION['sesion'] == 'iniciada') {

            return true;

        } else {
            return false;
        }
    }

    public function VerificarAcceso($solo_usar_en_modulos = false)
    {
        /*      // self::IniciarSesion();
        if ($_SESSION['sesion'] == 'iniciada')
        {
        return true;
        } else
        {
        return false;
        }
        */
        /* ESTA WEBA NO FUNCIONO COMO DEBIA!! */
        return false;
    }

    function Logout()
    {

        //session_unset() ;


        session_destroy();

        /*	header( 'Location: login.php?mensaje=sinlogin' ) ;*/

?>
			<!--
            <script type="text/javascript">
	           $.zen.error('El sistema se ha cerrado','Por seguridad el sistema requiere que usted vuelva iniciar sesión');
               location.href='/proyecto/';
            </script>
			-->
            <?php

    }
    function LogoutModulo()
    {

        session_name("Login");

        session_start();
        //session_unset() ;

        session_destroy();


        /*	header( 'Location: login.php?mensaje=sinlogin' ) ;*/

?>
		
            <script type="text/javascript">
              var $asdf=$($.zen.confirmar('Por seguridad el sistema requiere que usted vuelva iniciar sesión.')).dialog({
        				autoOpen: false,
                            draggable: false,
                            resizable: false,
                            modal: true,
                            width: 400,
                            maxWidth: 400,
        			buttons: {
        				"Aceptar": function() {
        					$(this).dialog('close');
                           location.href='/proyecto/index.php';
        				},
        				"Cancelar": function() {
        					$(this).dialog('close');
                            location.href='/proyecto/index.php';
        				}
        			}
        		});
                $asdf.dialog('open');
	           //$.zen.error('El sistema se ha cerrado','Por seguridad el sistema requiere que usted vuelva iniciar sesión');
               
            </script>
		
            <?php

    }


    public function Capitalizar($w)
    {

        return ucwords(strtolower($w));

    }


    function errores()
    {

        return $this->error;

    }


    /*

    Esta funcion (__call) sirve para que la clase Zen reconozca metodos de otras clases

    como: Execute y todas las de la clase adodb,

    entonces poder hacer $zen->Execute($sql)

    */

    public function __call($method, $arguments)
    {


        if (method_exists(self::$conexion, $method)) {


            return call_user_func_array(array(self::$conexion, $method), $arguments);


        }


    }


    function ValidaUsuario()
    {

        $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;

        $sql = "select * from usuarios";

        $rs = self::$conexion->Execute($sql);

        if ($rs) {

            return $this->tata = 'oka sql';

        } else {

            return $this->tata = ' mal sql';

        }


        return $this->tata;


    }

    static public function MenuVertical($rol)
    {

        $html .= '<ul id="zen_menu_vertical" class="zen_menu menu_vertical">

              <li id="modulo_inicio"><a class="enlaceprincipal"  id="menu_inicio" >Inicio</a></li>';

        $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;

        $id_rol = $rol;

        $sql = "select modulos.mod_id,modulos.mod_orden,modulos.nod_nombre_largo,modulos.mod_nombre_corto from enlaces_rol,enlaces,modulos where enlaces_rol.rol_id='$id_rol' and enlaces_rol.enl_id=enlaces.enl_id and enlaces.mod_id=modulos.mod_id group by modulos.mod_id,modulos.mod_orden,modulos.nod_nombre_largo,modulos.mod_nombre_corto order by modulos.mod_orden asc";
        //$rs = self::$conexion->Execute( $sql ) ;
        $rs = self::Consulta($sql);


        if ($rs) {

            foreach ($rs as $k => $val) {

                $html .= '<li id="modulo_' . $val['mod_nombre_corto'] . '">';

                $html .= '<a class="enlaceprincipal">' . ucwords($val['nod_nombre_largo']) .
                    '</a>';

                $html .= '<ul class="zen_menu_vertical_submenu">';

                $id_modulo = $val['mod_id'];

                $SqlLinks = "select enl_nombre_corto,enl_nombre_largo from enlaces_rol,enlaces where enlaces_rol.rol_id='$id_rol'and enlaces_rol.enl_id=enlaces.enl_id and enlaces.mod_id='$id_modulo' order by enlaces.enl_orden asc";

                $ListaLinks = self::Consulta($SqlLinks);


                if ($ListaLinks) {

                    foreach ($ListaLinks as $k => $val2) {

                        $html .= '<li class="contenedor_sub_menu"><input type="hidden" value="' . $val2['enl_nombre_corto'] .
                            '" /><a class="zen_enlace_menu_vertical">' . ucwords($val2['enl_nombre_largo']) .
                            '</a><span class="loader"></span></li>';

                    }

                } else {

                    $error = 'error al recuperar links';

                }


                $html .= '</ul>';

                $html .= '</li>';

            }

        }

        $html .= '</ul>';

        return $html;

    }

    static public function MenuVertical4($rol)
    {

        $html .= '<ul id="zen_menu_vertical" class="zen_menu menu_vertical">

              <li id="modulo_inicio"><a href="inicio/default/"  class="enlaceprincipal"  id="menu_inicio" >Inicio</a></li>';

        $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;

        $id_rol = $rol;

        $sql = "select modulos.mod_id,modulos.mod_orden,modulos.nod_nombre_largo,modulos.mod_nombre_corto from enlaces_rol,enlaces,modulos where enlaces_rol.rol_id='$id_rol' and enlaces_rol.enl_id=enlaces.enl_id and enlaces.mod_id=modulos.mod_id and enlaces_rol.menu=true group by modulos.mod_id,modulos.mod_orden,modulos.nod_nombre_largo,modulos.mod_nombre_corto order by modulos.mod_orden asc";
        //$rs = self::$conexion->Execute( $sql ) ;
        $rs = self::Consulta($sql);


        if ($rs) {

            foreach ($rs as $k => $val) {

                $html .= '<li id="modulo_' . $val['mod_nombre_corto'] . '">';

                $html .= '<a class="enlaceprincipal">' . ucwords($val['nod_nombre_largo']) .
                    '</a>';

                $html .= '<ul class="zen_menu_vertical_submenu">';

                $id_modulo = $val['mod_id'];

                $SqlLinks = "select enl_nombre_corto,enl_nombre_largo from enlaces_rol,enlaces where enlaces_rol.rol_id='$id_rol'and enlaces_rol.enl_id=enlaces.enl_id and enlaces.mod_id='$id_modulo' order by enlaces.enl_orden asc";

                $ListaLinks = self::Consulta($SqlLinks);


                if ($ListaLinks) {

                    foreach ($ListaLinks as $k => $val2) {

                        $html .= '<li class="contenedor_sub_menu"><input type="hidden" value="' . $val2['enl_nombre_corto'] .
                            '" /><a href="' . $val['mod_nombre_corto'] . '/' . $val2['enl_nombre_corto'] .
                            '/" class="zen_enlace_menu_vertical">' . ucwords($val2['enl_nombre_largo']) .
                            '</a></li>';

                    }

                } else {

                    $error = 'error al recuperar links';

                }


                $html .= '</ul>';

                $html .= '</li>';

            }

        }

        $html .= '</ul>';

        return $html;

    }

    static public function MenuVertical2($rol)
    {
        //self::Db( $debug ) ; //instanciar la DB

        /* MARCADO XHTML BASE
        <ul id="zen_menu_vertical2" class="sf-menu sf-vertical">
        <!-- inicio ciclo para generar menu -->
        <li class="current">
        
        <a id="nombre_del_modulo_corto" href="#a">nombre_del_modulo_largo</a>
        <ul>
        <!-- inicio ciclo para generar submenu -->
        <li>
        <a href="#aa">nombre_opcion_largo</a>
        <input type="hidden" value="nombre_opcion_corto" />
        </li>
        <!-- fin ciclo para generar submenu -->
        </ul>
        </li>
        <!-- fin ciclo para generar menu -->
        </ul>
        
        
        */

        $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;

        $id_rol = $rol;

        $sql = "select modulos.mod_id,modulos.mod_orden,modulos.nod_nombre_largo,modulos.mod_nombre_corto from enlaces_rol,enlaces,modulos where enlaces_rol.rol_id='$id_rol' and enlaces_rol.enl_id=enlaces.enl_id and enlaces.mod_id=modulos.mod_id group by modulos.mod_id,modulos.mod_orden,modulos.nod_nombre_largo,modulos.mod_nombre_corto order by modulos.mod_orden asc";

        $rs = self::Consulta($sql);
        $html .= '<ul id="zen_menu_vertical2" class="sf-menu sf-vertical">';
        $html .= '
                <li class="current ui-corner-left">
				<!-- aki el titulo -->
				    <a class="linkactivo ui-corner-left enlace-principal-vertical-2" href="#" id="menu_inicio">Inicio</a>
			     </li>';
        if ($rs) {
            foreach ($rs as $k => $val) {
                //$html .= '<!-- inicio ciclo para generar menu -->' ;
                $html .= '<li class="current ui-corner-left">';

                $html .= '<a class="ui-corner-left enlace-principal-vertical-2" id="modulo_' . $val['mod_nombre_corto'] .
                    '" >' . self::Capitalizar($val['nod_nombre_largo']) . '</a>';


                $id_modulo = $val['mod_id'];

                $SqlLinks = "select enl_nombre_corto,enl_nombre_largo from enlaces_rol,enlaces where enlaces_rol.rol_id='$id_rol'and enlaces_rol.enl_id=enlaces.enl_id and enlaces.mod_id='$id_modulo' order by enlaces.enl_orden asc";

                $ListaLinks = self::Consulta($SqlLinks);
                if ($ListaLinks) {
                    //$html .= '<!-- inicio ciclo para generar submenu -->' ;
                    $html .= '<ul>';

                    foreach ($ListaLinks as $k => $val2) {

                        $html .= '<li ><a href="#" class="zen_enlace_menu_vertical2">' . self::
                            Capitalizar($val2['enl_nombre_largo']) . ' </a><input type="hidden" value="' . $val2['enl_nombre_corto'] .
                            '"/></li>';
                    }

                    //$html .= '<!-- fin ciclo para generar submenu -->' ;

                    $html .= '</ul>';
                }
                $html .= '</li>';
            }
        }
        //$html .= '<!-- fin ciclo para generar menu -->' ;
        $html .= '</ul>';


        return $html;

    }

    static public function MenuVertical3($rol)
    {
        //ESTO SE USA PARA LOS PERMISOS!!!!


        //self::Db( $debug ) ; //instanciar la DB

        /* MARCADO XHTML BASE
        <ul id="zen_menu_vertical2" class="sf-menu sf-vertical">
        <!-- inicio ciclo para generar menu -->
        <li class="current">
        
        <a id="nombre_del_modulo_corto" href="#a">nombre_del_modulo_largo</a>
        <ul>
        <!-- inicio ciclo para generar submenu -->
        <li>
        <a href="#aa">nombre_opcion_largo</a>
        <input type="hidden" value="nombre_opcion_corto" />
        </li>
        <!-- fin ciclo para generar submenu -->
        </ul>
        </li>
        <!-- fin ciclo para generar menu -->
        </ul>
        
        
        */

        $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;

        $id_rol = $rol;

        $sql = "select modulos.mod_id,modulos.mod_orden,modulos.nod_nombre_largo,modulos.mod_nombre_corto from enlaces_rol,enlaces,modulos where enlaces_rol.rol_id='$id_rol' and enlaces_rol.enl_id=enlaces.enl_id and enlaces.mod_id=modulos.mod_id group by modulos.mod_id,modulos.mod_orden,modulos.nod_nombre_largo,modulos.mod_nombre_corto order by modulos.mod_orden asc";
        //$rs = self::$conexion->Execute( $sql ) ;
        $rs = self::Consulta($sql);
        $html .= '<ul id="qqq" class="aaaaa">';
        if ($rs) {
            foreach ($rs as $k => $val) {
                //$html .= '<!-- inicio ciclo para generar menu -->' ;
                $html .= '<li class="rrr">';

                $html .= '<strong class="ppp" id="conf_modulo_' . $val['mod_nombre_corto'] .
                    '" >' . self::Capitalizar($val['nod_nombre_largo']) . '</strong>';


                $id_modulo = $val['mod_id'];

                $SqlLinks = "select enl_nombre_corto,enl_nombre_largo from enlaces_rol,enlaces where enlaces_rol.rol_id='$id_rol'and enlaces_rol.enl_id=enlaces.enl_id and enlaces.mod_id='$id_modulo' order by enlaces.enl_orden asc";
                $SqlLinksSinFiltro =
                    "select enl_nombre_corto,enl_nombre_largo from enlaces_rol,enlaces where enlaces_rol.enl_id=enlaces.enl_id and enlaces.mod_id='$id_modulo' order by enlaces.enl_orden asc";

                $ListaLinks = self::Consulta($SqlLinks);
                $ListaLinksSinFiltro = self::Consulta($SqlLinksSinFiltro);
                if ($ListaLinks) {
                    //$html .= '<!-- inicio ciclo para generar submenu -->' ;
                    $html .= '<ul>';
                    foreach ($ListaLinks as $k => $val2) {

                        $html .= '<li class="margin-left-10"><input class="margin-right-3" type="checkbox" checked="checked" /><a>' .
                            self::Capitalizar($val2['enl_nombre_largo']) . ' </a><input id="' . $id_rol .
                            '-' . $val['mod_id'] . '-' . $val2['enl_id'] . '" name="' . $id_rol . '-' . $val['mod_id'] .
                            '-' . $val2['enl_id'] . '" type="hidden" value="' . $val2['enl_nombre_corto'] .
                            '"/>';
                        $html .= '</li>';
                    }

                    //$html .= '<!-- fin ciclo para generar submenu -->' ;

                    $html .= '</ul>';
                }
                $html .= '</li>';
            }
        }
        //$html .= '<!-- fin ciclo para generar menu -->' ;
        $html .= '</ul>';


        return $html;

    }


    function EjecutarSql($sql, $debug = false)
    {
        self::Db($debug); //instanciar la DB
        $rs = self::$conexion->Execute($sql);

        if ($rs) {

            return $rs;

        } else {

            return false;

            $e = ADODB_Pear_Error();

            $this->error = $e->message;

        }

    }


    function Consulta($sql, $debug = false)
    {
        self::Db($debug); //instanciar la DB
        $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
        $rs = self::$conexion->Execute($sql);

        if ($rs) {

            return $rs;

        } else {

            return false;

        }

    }
    public function AutoSql($debug = false, $tabla, $registros, $operacion, $where = false,
        $update_inteligente = true, $encomillado_automatico = false)
    {
        self::Db($debug); //instanciar la DB
        $rs = self::$conexion->AutoExecute($tabla, $registros, $operacion, $where, $update_inteligente,
            $encomillado_automatico);

        if ($rs) {

            return $rs;

        } else {

            return false;

        }

    }
    public function FilasAfectadas()
    {
        //self::Db() ; //instanciar la DB
        $nfilas = self::$conexion->Affected_Rows();
        return $nfilas;
    }
    public function NumeroRegistros($rs)
    {
        //self::Db() ; //instanciar la DB

        return $rs->RecordCount();
    }


    function Borrar($tablename, $where, $debug = false)
    {

        $rs = self::Consulta('DELETE FROM ' . $tablename . ' WHERE ' . $where, $debug);

        if ($rs) {
            return $rs;
        } else {
            return false;
        }
    }


    public function Guardian()
    {

        $json = new Services_JSON();

        $datos["error"] = 'mal';


        return $json->encode($datos);

    }

    public static function SqlPost($post)
    {

        return array_diff_assoc($post, array("Send" => "guardar"));

    }

    public function Minusculas($w)
    {

        $code = 'UTF-8';

        return mb_strtolower($w, $code);

    }

    public function ValidaNumeros($numero, $decimales = 0)
    {
        if (is_numeric($numero)) {
            return number_format($numero, $decimales, ',', '');
        } else {
            return false;
        }


    }

    public function ValidaFecha($n)
    {

        return $n;

    }

    public function ValidaHora($n)
    {

        return $n;

    }

    public function ValidaTexto($n)
    {

        return $n;

    }


    public function IdTipoAtencion($IdJornada)
    {

        $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;

        $sql = "select tia_id from jornadas where jor_id=$IdJornada";

        $rs = self::$conexion->Execute($sql);

        if ($rs) {

            return $rs->fields("tia_id");

        } else {

            return 'FAIL IdTipoAtencion';

        }

    }

    public function EliminarSegundos($hora)
    {

        list($hora1, $minut, $seg) = split('[:]', $hora);

        //return date( "H:i", strtotime($hora) ) ;

        return ($hora1 . ':' . $minut);

    }

    public function BuscaHoraBloque($hora)
    {


        return false;


    }

    public function CalculaSiguienteHoraBloque($HoraInicio, $Bloques)
    {


        list($hora1, $minut) = split('[:]', $HoraInicio);

        $HoraInicio = date("H:i", mktime($hora1, $minut + $Bloques, 0));


        return $HoraInicio;


    }
    public function FormatoHora($Hora)
    {
        if (isset($Hora)) {

            list($hora, $minut, $seg) = split('[:]', $Hora);
            return $hora . ':' . $minut;
        } else {
            return false;
        }


    }
    public function HoraSoloNumeros($Hora)
    {
        if (isset($Hora)) {
            list($hora, $minut, $seg) = split('[:]', $Hora);
            return $hora . $minut . $seg;
        } else {
            return false;
        }


    }

    public function NombreDia($fecha) //formado yyyy-mm-dd eje: 2010-30-21

    {
        if (isset($fecha)) {
            $dias = array("Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes",
                "Sábado");
            list($fa, $fm, $fd) = split('[-]', $fecha);
            return $dias[date("w", mktime(0, 0, 0, $fm, $fd, $fa))];
        } else {
            return false;
        }

    }
    public function FormatoFecha($fecha) //formado yyyy-mm-dd eje: 2010-30-21

    {
        if (isset($fecha)) {
            //echo 'Zen::FormatoFecha : '.$fecha;
            $meses = array("", "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio",
                "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");
            list($fa, $fm, $fd) = split('[-]', $fecha);
            return $fd . '-' . $meses[date("n", mktime(0, 0, 0, $fm, $fd, $fa))] . '-' . $fa;
        } else {
            return false;
        }
    }
    public function FechaSoloNumeros($fecha) //formado yyyy-mm-dd eje: 2010-30-21

    {
        if (isset($fecha)) {

            list($fa, $fm, $fd) = split('[-]', $fecha);
            return $fd . $fm . $fa;
        } else {
            return false;
        }
    }
    public function NombreMes($fecha) //formado yyyy-mm-dd eje: 2010-30-21

    {
        if (isset($fecha)) {
            $meses = array("", "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio",
                "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");
            list($fa, $fm, $fd) = split('[-]', $fecha);
            return $meses[date("n", mktime(0, 0, 0, $fm, $fd, $fa))];
        } else {
            return false;
        }
    }

    public static function ValidaRut($r)
    {

        $r = strtoupper(ereg_replace('\.|,|-', '', $r));

        $sub_rut = substr($r, 0, strlen($r) - 1);

        $sub_dv = substr($r, -1);

        $x = 2;

        $s = 0;

        for ($i = strlen($sub_rut) - 1; $i >= 0; $i--) {

            if ($x > 7) {

                $x = 2;

            }

            $s += $sub_rut[$i] * $x;

            $x++;

        }

        $dv = 11 - ($s % 11);

        if ($dv == 10) {

            $dv = 'K';

        }

        if ($dv == 11) {

            $dv = '0';

        }

        if ($dv == $sub_dv) {

            return true;

        } else {

            return false;

        }

    }
    public function NoCache()
    {
        /*    header( "Expires: Tue, 03 Jul 2001 06:00:00 GMT" ) ;
        header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" ) ;
        header( "Cache-Control: no-store, no-cache, must-revalidate, max-age=0" ) ;
        header( "Cache-Control: post-check=0, pre-check=0", false ) ;
        header( "Pragma: no-cache" ) ;*/
    }
    public function ArrayPostArrayPhp($arrayPost)
    {
        parse_str(stripslashes($arrayPost), $arrayPhp);
        return $arrayPhp;
    }
    public function MensajeInformacion($t, $margen = 10)
    {
        $html = '<div class="ui-widget">
			<div class="ui-state-highlight ui-corner-all" style="margin: ' . $margen .
            'px; padding: 0.7em;"> 
				<p><span class="ui-icon ui-icon-info" style="float: left; margin-right: .3em;"></span>
				<strong>' . $t . '</strong></p>
			</div></div>';
        return $html;
    }
    public function MensajeError($t, $margen = 10)
    {
        $html = '<div class="ui-widget">
			<div class="ui-state-highlight ui-corner-all" style="margin: ' . $margen .
            'px; padding: 0.7em;"> 
				<p><span class="ui-icon ui-icon-info" style="float: left; margin-right: .3em;"></span>
				<strong>' . $t . '</strong></p>
			</div></div>';
        return $html;
    }

    public function MostrarErroresPhp()
    {
        error_reporting(E_ALL);
        ini_set("display_errors", "1");
    }

    public function GeneraSelectTabla($tabla, $campo_valor, $titulo_opcion, $id, $debug = false,
        $clase_label = false, $clase_select = false, $where = false, $orden = false, $label =
        'Elige:', $valor_seleccionado = false)
    {

        if (isset($tabla, $campo_valor, $titulo_opcion, $id)) {

            if ($clase_label != '') {
                $clase_label = 'class="' . $clase_label . '"';
            }

            $clase_select = 'class="ui-widget-content ' . $clase_select . '"';

            if ($where != '') {
                $where = 'WHERE ' . $where;
            }
            if ($orden != '') {
                $orden = 'ORDER BY ' . $orden;
            }


            $sql = "select * from $tabla $where $orden";
            $rs = self::Consulta($sql, $debug);

            if ($rs) {
                echo ' <label ' . $clase_label . ' for="' . $id . '">' . $label . '</label>';
                echo '<select size="1" name="' . $id . '" id="' . $id . '" ' . $clase_select .
                    '>';
                echo '<option value="" ></option>';
                foreach ($rs as $k => $record) {
                    $valor_titulo_final = '';
                    foreach ($titulo_opcion as $k => $val3) {
                        $valor_titulo_final .= $record["$val3"] . ' ';
                    }
                    //$valor_titulo_final = $record["$campo_titulo"];
                    echo '<option value="' . $record["$campo_valor"] . '" >' . $valor_titulo_final .
                        '</option>';
                }
                echo '</select>';
            }


        } else {
            echo 'Faltan parámetros!';
            // print_r($tabla, $campos, $campo_valor, $campo_titulo, $id);
        }


    }

    public function JsTabla($id)
    {
        echo 'Esta funcion ha sido eliminada';

    }

    function CalculaEdad($edad)
    {
        if (isset($edad) && $edad != '') {
            //formato yyyy-mm-dd
            list($anio, $mes, $dia) = explode("-", $edad);
            $anio_dif = date("Y") - $anio;
            $mes_dif = date("m") - $mes;
            $dia_dif = date("d") - $dia;
            if ($dia_dif < 0 || $mes_dif < 0)
                $anio_dif--;
            return $anio_dif . ' años';
        } else {
            return 'Se desconoce';
        }

    }
    function PonerPuntosRut($rut)
    {
        $rutTmp = explode("-", $rut);

        return number_format($rutTmp[0], 0, "", ".") . '-' . $rutTmp[1];

    }
    public function ValidaUrl($url)
    {
        /*    if (isset($url))
        {
        //el http:// tiene que estar presente
        $expresion = '/^http:\/\/[a-z0-9-]{1,}?\.?[a-z0-9-]*\.?[a-z0-9]{3}?.[a-z]{2,}(\/[a-z0-9-])?\/?$/i';
        if (preg_match($expresion, $url))
        {
        return true;
        } else
        {
        return false;
        }

        } else
        {
        return false;
        }*/
        return preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $url);

    }


}

?>